package com.lyq.event;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;

/**
 * 用户服务
 */
@Service
@Slf4j
public class UserService {
    @Autowired
    private ApplicationEventPublisher publisher;

    public void addUser() {
        UserActionEvent userActionEvent = new UserActionEvent(this);
        userActionEvent.setSuccess(true);

        publisher.publishEvent(userActionEvent);
        log.info("发布用户事件:{}, currentThread:{}", userActionEvent, Thread.currentThread());

        UserActionEvent userActionEvent2 = new UserActionEvent(this);
        userActionEvent2.setSuccess(true);

        publisher.publishEvent(userActionEvent2);
        log.info("发布用户事件2:{}, currentThread:{}", userActionEvent2, Thread.currentThread());
    }

    //作用在普通方法上，会在注入的时候调用一次该方法，如果方法中有实体参数，会对方法里面的参数进行装配，并调用一次该方法。这个可以用来在自动注入的时候做一些初始化操作。
    @Autowired
    public void init() {
        log.info("调用了init");
    }
}
